import pygame
import sys

class Rocket():
    '''我是一个喜欢到处飞的小火箭'''
    def __init__(self,ai_game):
        '''初始化飞船并设置其初始位置'''
        self.screen=ai_game.screen
        self.screen_rect=ai_game.screen.get_rect()

        #加载火箭图像并获取其外接矩形
        self.image=pygame.image.load("D:\\GITEE\\study_code\\Python\\2022-12-16\\image\\小火箭.bmp")
        self.rect=self.image.get_rect()

        #小火箭一开始要老老实实的呆在中央
        self.rect.center=self.screen_rect.center

        #移动标志
        self.moving_right=False
        self.moving_left=False
        self.moving_up=False
        self.moving_down=False
    
    def update(self):
        '''起飞吧,小火箭'''
        if self.moving_right and self.rect.right<self.screen_rect.right:
            self.rect.x+=1
        if self.moving_left and self.rect.left>0:
            self.rect.x-=1
        if self.moving_up and self.rect.top>0:
            self.rect.y-=1
        if self.moving_down and self.rect.bottom<self.screen_rect.bottom:
            self.rect.y+=1

    def blitme(self):
        '''在指定位置绘制小火箭'''
        self.screen.blit(self.image,self.rect)

class game():
    '''初始化游戏并创建游戏资源'''

    def __init__(self):
        '''初始化游戏并创建游戏资源'''
        pygame.init()

        self.screen=pygame.display.set_mode((0,0),pygame.FULLSCREEN)#将游戏设置为全屏
        pygame.display.set_caption("喜欢星际穿梭的小火箭") #设立游戏标题

        self.rocket=Rocket(self)

    def run_game(self):
        '''开始游戏的主循环'''
        while True:
            #监视键盘和鼠标事件
            for event in pygame.event.get():
                if event.type==pygame.QUIT:#若鼠标点击到屏幕右上角的x，则游戏退出
                    sys.exit()
                elif event.type==pygame.KEYDOWN:#响应按键
                    if event.key==pygame.K_RIGHT:
                        self.rocket.moving_right=True
                    elif event.key==pygame.K_LEFT:
                        self.rocket.moving_left=True
                    elif event.key==pygame.K_UP:
                        self.rocket.moving_up=True
                    elif event.key==pygame.K_DOWN:
                        self.rocket.moving_down=True
                    elif event.key==pygame.K_q:#按Q退出游戏
                        sys.exit()
                elif event.type==pygame.KEYUP:#响应松开
                    if event.key==pygame.K_RIGHT:
                        self.rocket.moving_right=False
                    elif event.key==pygame.K_LEFT:
                        self.rocket.moving_left=False
                    elif event.key==pygame.K_UP:
                        self.rocket.moving_up=False
                    elif event.key==pygame.K_DOWN:
                        self.rocket.moving_down=False
            
            self.rocket.update()

            #每次循环时都重绘屏幕
            self.screen.fill((230,230,230))#将窗口背景颜色设置为银灰色
            self.rocket.blitme()#出现吧，小火箭

            #让最近绘制的屏幕可见
            pygame.display.flip()

if __name__=='__main__':
    #创建游戏实例并运行游戏
    ai=game()
    ai.run_game()


                

